//
// Created by wkm on 2024-04-21.
//

#ifndef AES128CHIPSYSTEMC_SHIFTROWS_DRIVER_H
#define AES128CHIPSYSTEMC_SHIFTROWS_DRIVER_H

#include "../core_module/CONSTANT.h"

SC_MODULE(shiftrows_driver) {
    sc_in<bool> d_clk;
    sc_out<bool> d_start, d_reset;
    sc_out<sc_uint<DATA_SIZE>> d_input_data_1;
    sc_out<sc_uint<DATA_SIZE>> d_input_data_2;
    sc_out<sc_uint<DATA_SIZE>> d_input_data_3;
    sc_out<sc_uint<DATA_SIZE>> d_input_data_4;
    sc_out<sc_uint<DATA_SIZE>> d_input_data_5;
    sc_out<sc_uint<DATA_SIZE>> d_input_data_6;
    sc_out<sc_uint<DATA_SIZE>> d_input_data_7;
    sc_out<sc_uint<DATA_SIZE>> d_input_data_8;
    sc_out<sc_uint<DATA_SIZE>> d_input_data_9;
    sc_out<sc_uint<DATA_SIZE>> d_input_data_10;
    sc_out<sc_uint<DATA_SIZE>> d_input_data_11;
    sc_out<sc_uint<DATA_SIZE>> d_input_data_12;
    sc_out<sc_uint<DATA_SIZE>> d_input_data_13;
    sc_out<sc_uint<DATA_SIZE>> d_input_data_14;
    sc_out<sc_uint<DATA_SIZE>> d_input_data_15;
    sc_out<sc_uint<DATA_SIZE>> d_input_data_16;

    void prc_shiftrows_driver();

    SC_CTOR(shiftrows_driver) {
        SC_THREAD(prc_shiftrows_driver);
        sensitive << d_clk.pos();
    }
};

#endif //AES128CHIPSYSTEMC_SHIFTROWS_DRIVER_H
